package elm.entity.po;
import com.fasterxml.jackson.annotation.JsonBackReference;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 食品实体类
 * 对应数据库中的食品表，包含食品的基本信息和关联的商家信息
 */
@Schema(description = "食品实体类，对应数据库中的食品表，包含食品的基本信息和关联的商家信息")
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Food {
    /**
     * 食品唯一标识符
     * 自增主键
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Schema(description = "食品唯一标识符，自增主键", example = "101")
    private Long id;

    /**
     * 关联的商家信息
     * 与Business实体形成多对一关系，使用@JsonBackReference避免序列化时的循环引用
     */
    @ManyToOne
    @JsonBackReference  // 标记为子对象，配合Business实体中的@JsonManagedReference
    @Schema(description = "关联的商家信息，表示该食品所属的商家")
    private Business business;

    /**
     * 食品名称
     */
    @Schema(description = "食品名称", example = "宫保鸡丁")
    private String name;

    /**
     * 食品图片URL
     */
    @Schema(description = "食品图片URL", example = "http://example.com/food.jpg")
    private String image;

    /**
     * 食品价格
     */
    @Schema(description = "食品价格", example = "15.00")
    private BigDecimal price;

    /**
     * 食品描述信息
     */
    @Schema(description = "食品描述信息", example = "这是一道美味的中式菜肴")
    private String description;
}
